28dc9e5c031a045fa561cbddfb3fbd4b4092f6a5,plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/sensors/ReviewsMeasuresDecorator.java,ReviewsMeasuresDecorator,decorate,#Resource#DecoratorContext#,58

Before Change


    // Open reviews
    ReviewQuery openReviewQuery = ReviewQuery.create().setResourceId(resource.getId()).addStatus(ReviewDto.STATUS_OPEN)
        .addStatus(ReviewDto.STATUS_REOPENED);
    Integer openReviewsCount = reviewDao.countByQuery(openReviewQuery);
    context.saveMeasure(CoreMetrics.ACTIVE_REVIEWS, openReviewsCount.doubleValue());

    // Unassigned reviews
    ReviewQuery unassignedReviewQuery = ReviewQuery.copy(openReviewQuery).setNoAssignee();
    Integer unassignedReviewsCount = reviewDao.countByQuery(unassignedReviewQuery);
    context.saveMeasure(CoreMetrics.UNASSIGNED_REVIEWS, unassignedReviewsCount.doubleValue());

    // Unplanned reviews
    ReviewQuery plannedReviewQuery = ReviewQuery.copy(openReviewQuery).setPlanned();
    int plannedReviewsCount = reviewDao.countByQuery(plannedReviewQuery);
    context.saveMeasure(CoreMetrics.UNPLANNED_REVIEWS, (double) (openReviewsCount - plannedReviewsCount));

    // False positive reviews
    ReviewQuery falsePositiveReviewQuery = ReviewQuery.create().setResourceId(resource.getId())
        .addResolution(ReviewDto.RESOLUTION_FALSE_POSITIVE);
    Integer falsePositiveReviewsCount = reviewDao.countByQuery(falsePositiveReviewQuery);
    context.saveMeasure(CoreMetrics.FALSE_POSITIVE_REVIEWS, falsePositiveReviewsCount.doubleValue());

    // Violations without a review
    int violationsCount = context.getViolations().size();

After Change


    // Open reviews
    ReviewQuery openReviewQuery = ReviewQuery.create().setResourceId(resource.getId()).addStatus(ReviewDto.STATUS_OPEN)
        .addStatus(ReviewDto.STATUS_REOPENED);
    Double resourceOpenReviewsCount = reviewDao.countByQuery(openReviewQuery).doubleValue();
    Double totalOpenReviewsCount = resourceOpenReviewsCount + getChildrenSum(resource, context, CoreMetrics.ACTIVE_REVIEWS);
    context.saveMeasure(CoreMetrics.ACTIVE_REVIEWS, totalOpenReviewsCount);

    // Unassigned reviews
    ReviewQuery unassignedReviewQuery = ReviewQuery.copy(openReviewQuery).setNoAssignee();
    Double ressourceUnassignedReviewsCount = reviewDao.countByQuery(unassignedReviewQuery).doubleValue();
    Double totalUnassignedReviewsCount = ressourceUnassignedReviewsCount
      + getChildrenSum(resource, context, CoreMetrics.UNASSIGNED_REVIEWS);
    context.saveMeasure(CoreMetrics.UNASSIGNED_REVIEWS, totalUnassignedReviewsCount);

    // Unplanned reviews
    ReviewQuery plannedReviewQuery = ReviewQuery.copy(openReviewQuery).setPlanned();
    Double resourcePlannedReviewsCount = reviewDao.countByQuery(plannedReviewQuery).doubleValue();
    Double childrenUnplannedReviewsCount = getChildrenSum(resource, context, CoreMetrics.UNPLANNED_REVIEWS);
    context.saveMeasure(CoreMetrics.UNPLANNED_REVIEWS, (resourceOpenReviewsCount - resourcePlannedReviewsCount)
      + childrenUnplannedReviewsCount);

    // False positive reviews
    ReviewQuery falsePositiveReviewQuery = ReviewQuery.create().setResourceId(resource.getId())
        .addResolution(ReviewDto.RESOLUTION_FALSE_POSITIVE);
    Double resourceFalsePositiveReviewsCount = reviewDao.countByQuery(falsePositiveReviewQuery).doubleValue();
    Double totalFalsePositiveReviewsCount = resourceFalsePositiveReviewsCount
      + getChildrenSum(resource, context, CoreMetrics.FALSE_POSITIVE_REVIEWS);
    context.saveMeasure(CoreMetrics.FALSE_POSITIVE_REVIEWS, totalFalsePositiveReviewsCount);

    // Violations without a review